﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using _4.Modelado.Inventario;

namespace _3.Datos.Inventario
{

    public class Det_Ajuste_ExistenciaBD
    {
        /// <summary>
        /// Este método inserta y modifica una área
        /// </summary>
        /// <param name="comando">sentencia SQL</param>
        /// <param name="obj">Contiene las variable de la tabla</param>
        public void Det_Ajuste_ExistenciaGuardar(SqlCommand comando, Det_Ajuste_Existencia obj)
        {
            try
            {
                string sp = "usp_DetAjuste_ExistenciaGuardar";
                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                //comando.Parameters.Add(new SqlParameter("@PK_Det_Ajuste_Existencia", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Ajuste_Detalle", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Articulo_Detalle", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Razon_Detalle", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Bodega_Det_Ajuste_Existencia", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@DetalleCantidad", SqlDbType.Decimal));

                //comando.Parameters[0].Value = obj.iPK_Det_Ajuste_Existencia;
                comando.Parameters[0].Value = obj.iFK_Ajuste_Detalle;
                comando.Parameters[1].Value = obj.iFK_Articulo_Detalle;
                comando.Parameters[2].Value = obj.iFK_Razon_Detalle;
                comando.Parameters[3].Value = obj.iFK_Bodega_Det_Ajuste_Existencia;
                comando.Parameters[4].Value = obj.dcDetalleCantidad;

                comando.ExecuteNonQuery();
            }
            catch (Exception exc)
            {

                throw exc;
            }

        }

        public void Det_Ajuste_ExistenciaEliminar(SqlCommand comando, Det_Ajuste_Existencia obj)
        {
            try
            {
                string sp = "usp_DetAjuste_ExistenciaEliminar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                 comando.Parameters.Add(new SqlParameter("@FK_Ajuste_Detalle", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Articulo_Detalle", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_Bodega_Det_Ajuste_Existencia", SqlDbType.Int));

                comando.Parameters[0].Value = obj.iFK_Ajuste_Detalle;
                comando.Parameters[1].Value = obj.iFK_Articulo_Detalle;
                comando.Parameters[2].Value = obj.iFK_Bodega_Det_Ajuste_Existencia;
       

                comando.ExecuteNonQuery();

            }
            catch (Exception e)
            {

                throw e;
            }
        }

        public List<Det_Ajuste_Existencia> Det_Ajuste_ExistenciaConsultar(SqlCommand comando, int FK_AjusteExistencia)
        {
            try
            {
                string sp = "usp_DetAjuste_ExistenciaConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@FK_Ajuste_Detalle", SqlDbType.Int));

                comando.Parameters[0].Value = FK_AjusteExistencia;

                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                var lista = new List<Det_Ajuste_Existencia>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {



                    var obj = new Det_Ajuste_Existencia();
                   
                    obj.iFK_Ajuste_Detalle = Convert.ToInt32(dt.Rows[i]["FK_Ajuste_Detalle"]);
                    obj.iFK_Articulo_Detalle = Convert.ToInt32(dt.Rows[i]["FK_Articulo_Detalle"]);
                    obj.sArticuloNombre = (dt.Rows[i]["ArticuloNombre"]).ToString();
                    obj.iFK_Razon_Detalle = Convert.ToInt32(dt.Rows[i]["FK_Razon_Detalle"]);
                    obj.sRazonAjusteDescripcion = (dt.Rows[i]["RazonAjusteDescripcion"]).ToString();
                    obj.iFK_Bodega_Det_Ajuste_Existencia = Convert.ToInt32(dt.Rows[i]["FK_Bodega_Det_Ajuste_Existencia"]);
                    obj.sBodUbicacion = (dt.Rows[i]["BodUbicacion"]).ToString();
                    obj.dcDetalleCantidad = Convert.ToDecimal((dt.Rows[i]["DetalleCantidad"]));
                    obj.dcArticuloExistencia_Global = Convert.ToDecimal((dt.Rows[i]["ArticuloExistencia_Global"]));

                    lista.Add(obj);
                }
                return lista;
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }
        

    }
}
